package com.gavin.plugin.service;

import com.gavin.plugin.database.IAtom;
import com.gavin.model.Request;
import com.gavin.model.Response;
import com.gavin.model.Result;
import com.gavin.schema.dataservice.BigTable;

public interface ITransBus{
	/**
	 * 初始化事务总线 dbbus_%s.xml
	 * @param dbBusXML
	 * @param classLoader
	 * @return
	 */
	public Result init(String dbBusXML, ClassLoader classLoader);

	/**
	 * 执行事务
	 * @param request
	 * @return
	 */
	Response execute(Request request);

	/**
	 * @title  执行原子事务
	 * @author Yudao 王冬明（woyuwodao@gmail.com） @date 2018/11/7 18:08
	 * @param	iAtom
	 * @return Response
	 */
	Response execute(IAtom iAtom);
	
	/**
	 * 启动服务
	 * @return
	 */
	Result start();
	
	/**
	 * 停止服务
	 */
	void stop();
	
	boolean isRunning();

	public String getParameter(String strName, String strDefaultValue);

	public String getParameter(String strName);

	public String getDataGroupId();
	
	public BigTable getTableRule(String tableName);
}
